Programmed logic arrays, often referred to as PLAs are well known circuits for producing a set of predetermined output signals, the values of which depend upon the values of the inputs to the PLA. In the prior art, ordinary logic gates, such as NAND gates and/or NOR gates, or other known logic arrays may be utilized to construct a PLA. Alternatively, in the prior art, read only memories (ROMS) are also utilized as PLAs. For example, each address within a ROM can be initialized to a desired value. In this manner, by placing appropriate signals on the address lines of a ROM, a particular location in the ROM is addressed and its contents can then be placed on the output lines of the ROM. Of course, once desired values are loaded into locations in the ROM, such values become fixed. Although programmable ROMs are available (PROMs), by their very nature, such PROMs cannot be changed during normal operation. That is, in order to reprogram a PROM, it is necessary to subject the PROM to an environment which is substantially different than that encountered during its normal operation. In particular, PROMs may be UV PROMs or EE PROMs for ultraviolet erasable or electronically erasable PROMs respectively. In order to reprogram UV PROMs, it is necessary to remove the device from its normal operating environment and place it into a device specially designed to program the PROM. Similarly, in order to reprogram an EE PROM, voltages much higher than those utilized in logic circuits during normal operation must be provided.
Thus, while PLAs are extremely useful devices for providing predetermined output signals in response to received input signals, they cannot be utilized in applications wherein the predetermined output signals must be dynamically changed notwithstanding that the same set of input signals are input to the PLA.
Of course, it is possible to build a PLA which provides all possible outputs. For example, if a PROM is utilized as a PLA then, if there are eleven outputs, all possible outputs can be provided in an array of 2.sup.10 locations. However, excepting in cases where it is necessary to use all or substantially all possible outputs, such an array would be extremely inefficient since most locations would never be accessed. Additionally, even with an array capable of producing all possible outputs, the output for a particular input would necessarily always be the same.